package org.finesys.common.hazelcast.core.base;

import java.util.concurrent.locks.Lock;

public interface DistributedBaseFactory {
    /**
     * 获取分布式集合
     *
     * @param name 分布式集合的名称
     * @return 分布式集合
     */
    DistributedCountDownLatch getCountDownLatch(String name);

    /**
     * 获取分布式集合
     *
     * @param name 分布式集合的名称
     * @return 分布式集合
     */
    Lock getLock(String name);

    /**
     * 获取分布式集合
     *
     * @param name 分布式集合的名称
     * @param <K>  泛型
     * @param <V>  泛型
     * @return 分布式集合
     */
    <K, V> DistributedMap<K, V> getMap(String name);

    /**
     * 获取分布式集合
     *
     * @param name 分布式集合的名称
     * @param <T>  泛型
     * @return 分布式集合
     */
    <T> DistributedQueue<T> getQueue(String name);

    /**
     * 获取分布式集合
     *
     * @param name 分布式集合的名称
     * @param <T>  泛型
     * @return 分布式集合
     */
    <T> DistributedSet<T> getSet(String name);
}
